const { app, Menu, BrowserWindow, clipboard, shell } = require('electron');
const Store = require('electron-store');

const store = new Store();

// Handle creating/removing shortcuts on Windows when installing/uninstalling.
if (require('electron-squirrel-startup')) {
  app.quit();
}

const createWindow = () => {
  // Create the browser window.
  const mainWindow = new BrowserWindow({
    width: 960,
    height: 540,
    webPreferences: {
      webSecurity: false,
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true,
      backgroundThrottling: false,
    },
  });

  // and load the index.html of the app.
  mainWindow.loadURL(store.get('url') || 'https://www.baidu.com');
  // mainWindow.loadFile('./src/index.html');

  const template = [
    {
      label: '大屏程序',
      submenu: [
        {
          label: '进入/退出全屏',
          accelerator: 'Esc',
          click: () => {
            const isFullScreen = mainWindow.isFullScreen();
            if (isFullScreen) {
              mainWindow.setMenuBarVisibility(true);
              mainWindow.setFullScreen(false);
            } else {
              mainWindow.setMenuBarVisibility(false);
              mainWindow.setFullScreen(true);
            }
          },
        },
        {
          label: '从剪切板设置URL',
          accelerator: 'CmdOrCtrl+V',
          click: () => {
            const url = clipboard.readText();
            if (url) {
              store.set('url', url);
              mainWindow.loadURL(url);
            }
          },
        },
        {
          label: '查看',
          click: () => {
            shell.openExternal(store.get('url'))
          },
        },
        {
          label: '退出',
          accelerator: 'CmdOrCtrl+Q',
          click: () => {
            app.quit();
          },
        },
      ],
    },
  ];

  if (app.isPackaged) {
    mainWindow.once('ready-to-show', () => {
      mainWindow.setMenuBarVisibility(false);
      mainWindow.setFullScreen(true);
    })
  }

  if (app.isPackaged) {
    app.setLoginItemSettings({
      openAtLogin: true,
    });
  }

  const menu = Menu.buildFromTemplate(template);
  Menu.setApplicationMenu(menu);
};

app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required');

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
  createWindow();

  // On OS X it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and import them here.
